﻿using System;
using System.Data.SQLite;
using System.IO;
using Microsoft.Data.Sqlite;

/// <summary>
/// 用于初始化和管理 SQLite 数据库连接的工具类。
/// </summary>
public static class DatabaseHelper
{
    // 数据库文件路径：在程序根目录下的 Data 文件夹中
    private static readonly string dbPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Data", "UserDB.sqlite");

    // SQLite 连接字符串
    public static readonly string ConnectionString = $"Data Source={dbPath};Version=3;";

    /// <summary>
    /// 初始化数据库，如果数据库不存在则创建数据库文件和 Users 表。
    /// </summary>
    public static void InitializeDatabase()
    {
        try
        {
            if (!File.Exists(dbPath))
            {
                // 创建 Data 目录（如果不存在）
                Directory.CreateDirectory(Path.GetDirectoryName(dbPath));

                // 创建 SQLite 数据库文件
                SQLiteConnection.CreateFile(dbPath);

                using (var connection = new SQLiteConnection(ConnectionString))
                {
                    connection.Open();

                    // 创建 Users 表
                    string createTableQuery = @"
                        CREATE TABLE Users (
                            Id INTEGER PRIMARY KEY AUTOINCREMENT,
                            Username TEXT NOT NULL UNIQUE,
                            Password TEXT NOT NULL,
                            FullName TEXT,
                            Email TEXT,
                            CreatedDate DATETIME DEFAULT CURRENT_TIMESTAMP
                        );"
                    ;

                    using (var command = new SQLiteCommand(createTableQuery, connection))
                    {
                        command.ExecuteNonQuery();
                    }

                    // 插入测试用户 admin
                    string insertQuery = @"
                        INSERT INTO Users (Username, Password, FullName, Email)
                        VALUES ('admin', '123456', 'Administrator', 'admin@example.com');"
                    ;

                    using (var command = new SQLiteCommand(insertQuery, connection))
                    {
                        command.ExecuteNonQuery();
                    }
                }
            }
        }
        catch (Exception ex)
        {
            // 初始化失败，打印错误日志（或你也可以写入日志文件）
            Console.WriteLine("数据库初始化失败: " + ex.Message);
            throw;
        }
    }
}
